//
//  Monster.swift
//  MonsterTown
//
//  Created by liuzhu on 2018/9/26.
//  Copyright © 2018 liuzhu. All rights reserved.
//

//import Foundation
class Monster
{
    var town:Town?
    var name = "Monster"
    var victimPool:Int
    {
        get
        {
            return town?.population ?? 0
        }
        set(newVictimPool)
        {
            town?.population = newVictimPool
        }
    }
    
    func terrorizeTown()
    {
        if town != nil
        {
            print("\(name) is terrorizing a town")
        }
        else
        {
            print("\(name) hasn't found a town to terrorize yet...")
        }
    }
}





//属性
/*
 属性既可以是常量，也可以是变量
 类，结构体，枚举都可以有属性
 属性分为两种：存储属性和计算属性，存储属性可以有默认值，计算属性根据已有信息返回某种计算结果。
 
 */

//属性观察者
/*
 属性观察者会观察并响应给定属性的变化。属性观察者对于任何自定义的存储属性和任何继承的属性都可以。自定义的计算属性不能用属性观察者
 willSet观察属性即将发生变化
 didSet观察属性已经发生的变化
 */
